/* 解决js精确度丢失问题 */
import Decimal from 'decimal.js'

// 根据Decimal.js加减乘除计算封装,传参转换后只能是数字类型,且不能超过最大安全整数，否则返回NaN
export function calculator(value) {
	try {
		if ((Number(value) || value == 0) && !isNaN(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER) {
			const decimal = new Decimal(value)
			return {
				add(num) {
					return decimal.add(num)
				},
				subtract(num) {
					return decimal.sub(num)
				},
				multiply(num) {
					return decimal.mul(num)
				},
				divide(num) {
					return decimal.div(num)
				}
			}
		} else {
			Message.warning('请输入合理数字！')
			const decimal = new Decimal(NaN)
			return decimal
		}
	} catch (error) {
		console.error('decimal-->', error)
	}
}
